/**
 * 
 */
package com.lanswon.qzsmk.service.cardManageService;

import java.util.List;

import com.lanswon.qzsmk.base.DwzPage;
import com.lanswon.qzsmk.exception.ApplicationException;
import com.lanswon.qzsmk.model.CardData;
import com.lanswon.qzsmk.model.CardTask;
import com.lanswon.qzsmk.model.CooperationCompany;
import com.lanswon.qzsmk.vo.CardNoGeneratedVo;
import com.lanswon.qzsmk.vo.ImportBankFileVo;
import com.lanswon.qzsmk.vo.MakeCardParamVo;
import com.lanswon.qzsmk.vo.MakeCardQueryConditionVo;
import com.lanswon.qzsmk.vo.MakeCardQueryResultVo;
import com.lanswon.qzsmk.vo.PersonalVo;

/**
 * 制卡
 * @author sun
 *
 */
public interface MakeCardService {
	/**
	 * 分页 查询 根据任务编号 查询个人信息
	 * @return
	 */
	public DwzPage<PersonalVo> queryPersonalByCardTaskNo(MakeCardQueryConditionVo mcv);
	
	/**
	 * 分页 查询 根据申请批次号 查询个人信息
	 * @return
	 */
	public DwzPage<PersonalVo> queryPersonalByApplybatchNo(MakeCardQueryConditionVo mcv);
	
	/**
	 * 分页 查询 申请批次号信息
	 * @return
	 */
	public DwzPage<MakeCardQueryResultVo> queryBatchCollection(MakeCardQueryConditionVo mcv);

	/**
	 * 生成制卡任务-记名卡-批量   带个人信息
	 */
	public void GeneratCardMakeTask(List<MakeCardQueryResultVo> list);
	
	/**
	 * 生成制卡任务-不记名卡-批量 （空白卡和不带个人信息的几名衍生卡）
	 */
	public void GeneratCardMakeTask1(MakeCardParamVo mcpv) throws Exception;

	/**
	 * 根据合作商类型查询合作商
	 * @param companyType
	 * @return
	 */
	public List<CooperationCompany> queryCooperationCompanyByType (String companyType) throws Exception;
	
	/**
	 * 导出制卡文件(带个人信息)-记名
	 */
	public List<String> exportMakeCardFile(String root,List<MakeCardQueryResultVo> list)throws ApplicationException;
	
	/**
	 * 导出制卡文件-不记名
	 */
	public List<String> exportMakeCardFile1(String root,List<MakeCardQueryResultVo> list)throws ApplicationException;
	
	
	/**
	 * 查询制卡任务
	 * @param mcv
	 * @return
	 */
	public DwzPage<MakeCardQueryResultVo> queryCardTask(MakeCardQueryConditionVo mcv);
	
	/**
	 * 查询记名制卡文件所需信息
	 * @param cardTask 任务编号
	 * @param cardType 2:几名衍生卡    3：不记名卡
	 * @return
	 */
	public String queryMakeCardInfo(String cardTaskNo,String cardType);
	
	/**
	 * 查询不记名制卡文件所需信息
	 * @param cardTask 任务编号
	 * @return
	 */
	public String queryMakeCardInfo1(CardTask ct);
	
	/**
	 * 根据任务编号修改任务信息
	 * @param cardTaskNo
	 */
	public void modifyCardTaskByTaskNo(MakeCardParamVo mcpv);
	
	/**
	 * 删除任务
	 * @param cardTaskNos
	 */
	public void deleteCardTasks(String[] cardTaskNos);
	
	/**
	 *根据任务编号查询任务--不记名
	 * @param cardTaskNo
	 * @param taskType
	 * @return
	 */
	public MakeCardParamVo queryCardTaskByTaskNo(String cardTaskNo) throws ApplicationException;

	/**
	 * 银行申请信息 生成制卡任务
	 * @param list
	 * @param vv
	 * @throws Exception
	 */
	public void applyAndGeneratCardMakeTask(List<String>list,ImportBankFileVo vv) throws Exception;
	
	
	/**
	 * 查询自主发卡卡号批量生成记录
	 * @param cardNoGenerated
	 * @return
	 */
	public DwzPage<CardNoGeneratedVo> queryCardNoDetail(CardNoGeneratedVo cardNoGenerated);
	
	/**
	 * 生成自主发卡卡号库文件（记名和不记名）
	 * @param cardpCode
	 * @param prefix
	 * @param num
	 * @return
	 * @throws Exception
	 */
	Boolean generatorCitizenCardNo(String cardpCode, String prefix, Integer num) throws Exception;
	
}
